# tag/models.py
from django.db import models

from algorithm.utils import non_algorithm_tag_indices


class Tag(models.Model):
    index = models.IntegerField(unique=True,primary_key=True)
    tag_name = models.CharField(max_length=100)

    def __str__(self):
        return self.tag_name


# Tag的代理模式，AlgorithmTag是过滤掉非算法标签后的标签
class AlgorithmTagManager(models.Manager):
    def get_queryset(self):
        # 过滤掉 non_algorithm_tag_indices 中的标签
        return super().get_queryset().exclude(index__in=non_algorithm_tag_indices)


# 代理模式，Tag过滤非算法标签后的AlgoTag，过滤逻辑如上，过滤数组在algorithm/utils中
class AlgorithmTag(Tag):
    objects = AlgorithmTagManager()

    class Meta:
        proxy = True

    # 下面封装的玩法会循环导入
    # # 实例方法，计算该标签的标签分数
    # def calculate_tag_value(self):
    #     # 直接调用 TagValue 中的类方法计算标签值
    #     return TagValue.calculate_tag_value(self.index)
    #
    # # 实例方法，计算该标签的标签重要程度
    # def calculate_tag_importance(self):
    #     # 调用 TagImportance 类中的 calculate_tag_importance 方法来计算当前标签的重要性
    #     return TagImportance.calculate_tag_importance(self.index)